home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Visual Basic Controls
/
Visual Basic Controls.iso
/
vbcontrol
/
intmail2
/
ftpmain.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1999-08-02
|
14KB
|
489 lines
unit Ftpmain;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, ExtCtrls, Buttons, Menus, IniFiles,
{$IFDEF VER120}
ImgList,
{$ENDIF}
msFTP, msFTPCls, Mssocket, msWSock, ComCtrls, StdCtrls, msDef;
type
TFTPForm = class(TForm)
ToolBar: TPanel;
ConnectButton: TSpeedButton;
DisconnectButton: TSpeedButton;
ChDirButton: TSpeedButton;
UpdButton: TSpeedButton;
RetrieveFileButton: TSpeedButton;
StoreFileButton: TSpeedButton;
MkDirButton: TSpeedButton;
DeleteButton: TSpeedButton;
CancelButton: TSpeedButton;
ExitButton: TSpeedButton;
MainMenu1: TMainMenu;
File1: TMenuItem;
Connect1: TMenuItem;
Disconnect1: TMenuItem;
Retrieve1: TMenuItem;
Store1: TMenuItem;
Cancel1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
Directory1: TMenuItem;
Change1: TMenuItem;
ChangeUp1: TMenuItem;
Create1: TMenuItem;
Help1: TMenuItem;
About1: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
RenameButton: TSpeedButton;
Rename1: TMenuItem;
Delete1: TMenuItem;
StatusBar: TStatusBar;
LogMemo: TMemo;
LogOnOffButton: TSpeedButton;
FTPListView: TListView;
ImageList1: TImageList;
msFTPClient1: TmsFTPClient;
procedure FormCreate(Sender: TObject);
procedure ConnectButtonClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure About1Click(Sender: TObject);
procedure ExitButtonClick(Sender: TObject);
procedure RetrieveFileButtonClick(Sender: TObject);
procedure StoreFileButtonClick(Sender: TObject);
procedure UpdButtonClick(Sender: TObject);
procedure MkDirButtonClick(Sender: TObject);
procedure ChDirButtonClick(Sender: TObject);
procedure DisconnectButtonClick(Sender: TObject);
procedure RenameButtonClick(Sender: TObject);
procedure CancelButtonClick(Sender: TObject);
procedure DeleteButtonClick(Sender: TObject);
procedure FTPListViewDblClick(Sender: TObject);
procedure agFTP1LineTransmitted(Sender: TObject; const TheLine: String);
procedure LogOnOffButtonClick(Sender: TObject);
procedure msFTPClient1DataTransferStart(Sender: TObject);
procedure msFTPClient1DataTransferTerminate(Sender: TObject);
procedure msFTPClient1Connecting(Sender: TObject);
procedure msFTPClient1Connected(Sender: TObject);
procedure msFTPClient1Disconnected(Sender: TObject);
procedure msFTPClient1DataTransferProgress(Sender: TObject;
ByteCount: Longint);
private
{ Private declarations }
IniName : string;
FTPEntry : TmsFTPDirEntry;
TheFileSize : LongInt;
procedure EnableControls;
procedure DisableControls;
function GetFileSize(const FileName : string) : LongInt;
procedure FillFTPListView;
procedure UpdateFTPListView;
public
{ Public declarations }
end;
var
FTPForm: TFTPForm;
implementation
uses FtpConn, msAbout, ftptrans;
{$R *.DFM}
procedure TFTPForm.EnableControls;
var
i : Integer;
Btn : TSpeedButton;
begin
with ToolBar do
begin
for i:=0 to ControlCount-1 do
if Controls[i] is TSpeedButton then
begin
Btn:=(Controls[i] as TSpeedButton);
if Btn.Tag=1 then Btn.Enabled:=true
else
if Btn.Tag>=2 then Btn.Enabled:=false;
end;
end;
Directory1.Enabled:=false;
for i:=0 to File1.Count-1 do
begin
if File1[i].Tag=1 then File1[i].Enabled:=true
else
if File1[i].Tag=2 then File1[i].Enabled:=false;
end;
end;
procedure TFTPForm.DisableControls;
var
i : Integer;
Btn : TSpeedButton;
begin
with ToolBar do
begin
for i:=0 to ControlCount-1 do
if Controls[i] is TSpeedButton then
begin
Btn:=(Controls[i] as TSpeedButton);
if Btn.Tag=1 then
Btn.Enabled:=false
else
Btn.Enabled:=true;
end;
end;
Directory1.Enabled:=true;
for i:=0 to File1.Count-1 do
begin
if File1[i].Tag=1 then File1[i].Enabled:=false
else
if File1[i].Tag>=2 then File1[i].Enabled:=true;
end;
end;
procedure TFTPForm.FormCreate(Sender: TObject);
begin
EnableControls;
IniName:=ChangeFileExt(Application.ExeName,'.ini');
with TIniFile.Create(IniName) do
try
msFTPClient1.Host:=ReadString('Setup','Server','ftp.borland.com');
msFTPClient1.UserName:=ReadString('Setup','User Name','anonymous');
msFTPClient1.Password:=ReadString('Setup','Password','guest@');
msFTPClient1.TransferType:=TmsTransferType(ReadInteger('Setup','Transfer Type',0));
msFTPClient1.PassiveMode:=ReadBool('Setup','Passive Mode',false);
msFTPClient1.LogFileName:=ReadString('Setup','Log File','');
LogOnOffButton.Down:=ReadBool('Setup','Log Memo',true);
msFTPClient1.Proxy:=ReadString('Setup','Proxy Server','');
msFTPClient1.ProxyType:=TmsProxyType(ReadInteger('Setup','Proxy Type',0));
LogMemo.Visible:=LogOnOffButton.Down;
finally
free;
end;
end;
procedure TFTPForm.ConnectButtonClick(Sender: TObject);
var
Proceed : boolean;
i : Integer;
begin
Proceed:=false;
with TFTPConnectDlg.Create(Self) do
try
ServerEdit.Text:=msFTPClient1.Host;
UserNameEdit.Text:=msFTPClient1.UserName;
PasswordEdit.Text:=msFTPClient1.Password;
TransferTypeComboBox.ItemIndex:=Ord(msFTPClient1.TransferType);
PassiveModeCheckBox.Checked:=msFTPClient1.PassiveMode;
LogFileNameEdit.Text:=msFTPClient1.LogFileName;
i:=Pos(':',msFTPClient1.Proxy);
if i>0 then
begin
ProxyServerEdit.Text:=Copy(msFTPClient1.Proxy,1,i-1);
ProxyPortEdit.Text:=Copy(msFTPClient1.Proxy,i+1,Length(msFTPClient1.Proxy));
end
else
begin
ProxyServerEdit.Text:=msFTPClient1.Proxy;
ProxyPortEdit.Text:='21';
end;
ServerTypeRadioGroup.ItemIndex:=Ord(msFTPClient1.ProxyType);
if ShowModal=mrOK then
begin
Proceed:=true;
msFTPClient1.Host:=ServerEdit.Text;
msFTPClient1.UserName:=UserNameEdit.Text;
msFTPClient1.Password:=PasswordEdit.Text;
msFTPClient1.TransferType:=TmsTransferType(TransferTypeComboBox.ItemIndex);
msFTPClient1.PassiveMode:=PassiveModeCheckBox.Checked;
msFTPClient1.LogFileName:=LogFileNameEdit.Text;
msFTPClient1.Proxy:=ProxyServerEdit.Text+':'+Trim(ProxyPortEdit.Text);
msFTPClient1.ProxyType:=TmsProxyType(ServerTypeRadioGroup.ItemIndex);
end;
finally
Free;
end;
if Proceed then
begin
msFTPClient1.Login;
UpdateFTPListView;
end;
end;
procedure TFTPForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// if msFTPClient1.OnLine then
// msFTPClient1.Logout;
with TIniFile.Create(IniName) do
try
WriteString('Setup','Server',msFTPClient1.Host);
WriteString('Setup','User Name',msFTPClient1.UserName);
WriteString('Setup','Password',msFTPClient1.Password);
WriteInteger('Setup','Transfer Type',Ord(msFTPClient1.TransferType));
WriteBool('Setup','Passive Mode',msFTPClient1.PassiveMode);
WriteString('Setup','Log File',msFTPClient1.LogFileName);
WriteBool('Setup','Log Memo',LogOnOffButton.Down);
WriteString('Setup','Proxy Server',msFTPClient1.Proxy);
WriteInteger('Setup','Proxy Type',Ord(msFTPClient1.ProxyType));
finally
free;
end;
end;
procedure TFTPForm.About1Click(Sender: TObject);
begin
with TAboutDlg.Create(Self) do
try
ProgramName.Caption:='TmsFTPClient Component Demo';
ProductVersion.Caption:=msVersion;
ShowModal;
finally
Free;
end;
end;
procedure TFTPForm.ExitButtonClick(Sender: TObject);
begin
Close;
end;
procedure TFTPForm.FillFTPListView;
var
Item : TListItem;
i : Integer;
begin
for i:=0 to msFTPClient1.DirList.Count-1 do
begin
FTPEntry:=msFTPClient1.DirList[i];
Item:=FTPListView.Items.Add;
Item.Caption:=FTPEntry.FileName;
Item.SubItems.Add(IntToStr(FTPEntry.Size));
Item.SubItems.Add(DateTimeToStr(FTPEntry.Date));